package cn.tedu.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;

/**
 * @author :Colin
 * @version 创建时间: 2021/6/21 9:21
 */
public class TestCollection {


    public static void main(String[] args) {
        //Collection c=new Collection()
        /*1.<Integer>是泛型，用来约束集合C中可以存入的元素类型
        * 泛型中的type只能是引用类型，不能是基础类型*/
        Collection<Integer> c=new ArrayList();
        c.add(100);
        c.add(200);
        c.add(300);
        c.add(400);//向集合添加元素
        System.out.println(c);
//        c.clear();//清空集合所有元素
//        System.out.println(c);
        System.out.println(c.contains(300));//true,是否包含300
        System.out.println(c.hashCode());//4104521，哈希码
        System.out.println(c.isEmpty());//false,判断集合是否为空
        System.out.println(c.remove(300));//true.移除集合中首次出现的指定元素的300
        System.out.println(c);//[100, 200, 400]
        System.out.println(c.size());//3,获取当前集合元素
        System.out.println(c.equals(200));//false,比较两个对象是否相等，集合和200不能相等

        Object[] array = c.toArray();//将指定的集合对象转化为数组
        System.out.println(Arrays.toString(array));//[100, 200, 400]

        Collection<Integer> c2 =new ArrayList<>();

        c2.add(2);
        c2.add(4);
        c2.add(6);
        System.out.println(c2);
        c.addAll(c2);//c2添加到c集合中
        System.out.println(c);
        System.out.println(c2);
        System.out.println(c.contains(c2));//false,是否有元素c2
        System.out.println(c.containsAll(c2));//true,是否有集合c2
        System.out.println(c.retainAll(c2));//取两个集合之间的公共部分。“交集”
        System.out.println(c);//【2，4，6】
        System.out.println(c2);
        System.out.println(c2.retainAll(c));
        System.out.println(c2);
        c2.add(5);
        c.add(100);
        System.out.println(c2);
        System.out.println(c);
        System.out.println(c2.retainAll(c));
        System.out.println(c2);
        System.out.println(c.removeAll(c2));//删除c集合中c2元素
        System.out.println(c);//[]
        System.out.println("遍历，迭代对应的迭代器");
        //遍历，迭代对应的迭代器
        /*
        1.获取集合对应的迭代器 Iterator <E> it =c.iterator();
        2.判断集合中是否有下个元素 it.hasNext()
        3.获取当前迭代到元素 it.next()
         */
        Collection<Integer> c3=new ArrayList();
        c3.add(100);
        c3.add(200);
        c3.add(300);
        Iterator<Integer> it =c3.iterator();
        System.out.println(it.toString());
        while(it.hasNext()){
            Integer num = it.next();
            System.out.println(num);

        }
    }
}
